package com.example.hetong_system.repository;

import com.example.hetong_system.model.PaymentPlan;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.Optional;

/**
 * 操作payment_plan表（对应数据库表）
 */
public interface PaymentPlanRepository extends JpaRepository<PaymentPlan, Long> {

    // 根据外部订单号查询（支付后校验用）
    Optional<PaymentPlan> findByOutTradeNo(String outTradeNo);

    // 根据合同ID查询（用于后续查询该合同的支付计划）
    Optional<PaymentPlan> findByContractId(Long contractId);

    // 更新支付状态（支付成功后调用）
    @Modifying
    @Transactional
    @Query("UPDATE PaymentPlan p SET " +
            "p.isExecuted = true, " +
            "p.alipayTradeNo = :alipayTradeNo, " +
            "p.payTime = :payTime " +
            "WHERE p.outTradeNo = :outTradeNo")
    int updatePaymentSuccess(
            @Param("outTradeNo") String outTradeNo,
            @Param("alipayTradeNo") String alipayTradeNo,
            @Param("payTime") LocalDateTime payTime
    );
}